/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package wasolicitudesfiec.Ayudantias.SolicitarAyudantes;

import com.sun.data.provider.DataProviderException;
import com.sun.data.provider.FieldKey;
import com.sun.data.provider.RowKey;
import com.sun.data.provider.impl.AbstractTableDataProvider;
import com.sun.data.provider.impl.IndexRowKey;
import entidad.Persona;
import entidad.ayudantias.Solicitudserayudante;

import java.util.ArrayList;
import web.util.Constantes;
import wasolicitudesfiec.registros.Rg_CandidatoAyudante;

/**
 *
 * @author kabad
 */
public class Dp_SeleccionAyudantes extends AbstractTableDataProvider {

    public Dp_SeleccionAyudantes() {
        FieldKey key;

        key = new FieldKey("matricula");
        key.setDisplayName("Matricula");
        addFieldKey(key);

        key = new FieldKey("nombres");
        key.setDisplayName("Nombres");
        addFieldKey(key);

        key = new FieldKey("apellidos");
        key.setDisplayName("Apellidos");
        addFieldKey(key);

        key = new FieldKey("carrera");
        key.setDisplayName("Carrera");
        addFieldKey(key);

        key = new FieldKey("promedioGeneral");
        key.setDisplayName("Promedio Estudiante");
        addFieldKey(key);

        key = new FieldKey("promedioMateria");
        key.setDisplayName("Promedio Materia");
        addFieldKey(key);

        key = new FieldKey("promedioFacultad");
        key.setDisplayName("Promedio Facultad");
        addFieldKey(key);

        key = new FieldKey("numMateriasAprobadas");
        key.setDisplayName("Num. Mat. Aprobadas");
        addFieldKey(key);

        key = new FieldKey("horasDisponibles");
        key.setDisplayName("Horas Disponibles");
        addFieldKey(key);

        key = new FieldKey("horasContrato");
        key.setDisplayName("Horas Contrato");
        addFieldKey(key);

        key = new FieldKey("seleccionar");
        key.setDisplayName("Seleccionar");
        addFieldKey(key);

        key = new FieldKey("faltasDisciplinarias");
        key.setDisplayName("Faltas Disciplinarias");
        addFieldKey(key);

        key = new FieldKey("reproboMaterias");
        key.setDisplayName("Reprobo Materias");
        addFieldKey(key);

        key = new FieldKey("tieneDeudas");
        key.setDisplayName("Tiene Deudas");
        addFieldKey(key);

        key = new FieldKey("archivoAdjunto");
        key.setDisplayName("Adjunto");
        addFieldKey(key);

        key = new FieldKey("pathArchivoAdjunto");
        key.setDisplayName("Archivo Adjunto");
        addFieldKey(key);

        key = new FieldKey("observacionEstudiante");
        key.setDisplayName("Comentario Estudiante");
        addFieldKey(key);

        key = new FieldKey("respuesta");
        key.setDisplayName("Confirmacion Estudiante");
        addFieldKey(key);

        key = new FieldKey("disabled");
        key.setDisplayName("disabled");
        addFieldKey(key);

        key = new FieldKey("contrato");
        key.setDisplayName("Contrato");
        addFieldKey(key);

         key = new FieldKey("seleccionado");
        key.setDisplayName("Seleccionado");
        addFieldKey(key);
    }

    public Class getType(FieldKey fieldKey)
            throws DataProviderException {
        if (fieldKey.getFieldId().equals("horasContrato")) {
            return (new Integer(1)).getClass();
        } else if (fieldKey.getFieldId().equals("seleccionar")) {
            return (new Boolean(false)).getClass();
        } else {
            return (new String()).getClass();
        }
    }

    public boolean isReadOnly(FieldKey fieldKey)
            throws DataProviderException {
        return false;
    }

    public int getRowCount()
            throws DataProviderException {
        return this.getListaRg_CandidatoAyudante().size();
    }

    public Object getValue(FieldKey fieldKey, RowKey row)
            throws DataProviderException {
        int indice = ((IndexRowKey) row).getIndex();
        Rg_CandidatoAyudante registro = (Rg_CandidatoAyudante) this.getListaRg_CandidatoAyudante().get(indice);
        Persona estudiantePersona = registro.getSolicitudserayudante().getEstudiante().getPersona();
        Solicitudserayudante solicitudserayudante = registro.getSolicitudserayudante();
		if (fieldKey==null)
			return "";
		String fieldId = fieldKey.getFieldId();
        if (fieldId.equals("matricula")) {
            return registro.getSolicitudserayudante().getEstudiante() == null ? "No Disponible" : registro.getSolicitudserayudante().getEstudiante().getMatricula();

        } else if (fieldId.equals("nombres")) {
            return estudiantePersona == null ? "No Disponible" : estudiantePersona.getNombres();
        } else if (fieldId.equals("apellidos")) {
            return estudiantePersona == null ? "No Disponible" : estudiantePersona.getApellidos();
        } else if (fieldId.equals("carrera")) {
            return solicitudserayudante.getCarrera() == null ? "No Disponible" : solicitudserayudante.getCarrera().getNombre();
        } else if (fieldId.equals("promedioGeneral")) {
            return solicitudserayudante.getDatosacademicos() == null ? "No Disponible" : solicitudserayudante.getDatosacademicos().getPromedioGeneral();
        } else if (fieldId.equals("promedioMateria")) {
            return solicitudserayudante.getDatosmateria() == null ? "No Disponible" : solicitudserayudante.getDatosmateria().getPromedio();
        } else if (fieldId.equals("promedioFacultad")) {
            return solicitudserayudante.getSolicitudayudantia() == null ? "No Disponible" : solicitudserayudante.getSolicitudayudantia().getPromedioFacultad();
        } else if (fieldId.equals("numMateriasAprobadas")) {
            return solicitudserayudante.getDatosacademicos() == null ? "No Disponible" : solicitudserayudante.getDatosacademicos().getNumMateriasAprobadas();
        } else if (fieldId.equals("horasDisponibles")) {
            return solicitudserayudante.getHorasDisponibilidad() == 0 ? "No Disponible" : solicitudserayudante.getHorasDisponibilidad();
        } else if (fieldId.equals("horasContrato")) {
            return solicitudserayudante.getHorasContrato() == 0 ? "" : solicitudserayudante.getHorasContrato();
        } else if (fieldId.equals("seleccionar")) {
            return registro.isSeleccionado() ? "SI": "NO";
        } else if (fieldId.equals("faltasDisciplinarias")) {
            if (solicitudserayudante.getDatosacademicos() != null) {
                return solicitudserayudante.getDatosacademicos().getFueSancionado() ? "SI" : "NO";
            }
            return "No Disponible";
        } else if (fieldId.equals("reproboMaterias")) {
            if (solicitudserayudante.getDatosacademicos() != null) {
                return solicitudserayudante.getDatosacademicos().getReproboEnSemestreAnterior() ? "SI" : "NO";
            }
            return "No Disponible";

        } else if (fieldId.equals("tieneDeudas")) {
            if (solicitudserayudante.getDatosacademicos() != null) {
                return solicitudserayudante.getDatosacademicos().getTieneDeudas() ? "SI" : "NO";
            }
            return "No Disponible";

        } else if (fieldId.equals("archivoAdjunto")) {
            if (solicitudserayudante.getNombreArchivo() == null) {
                return "No Disponible";
            } else if (solicitudserayudante.getNombreArchivo() == null || solicitudserayudante.getNombreArchivo().equals("")) {
                return "No requerido";
            } else {
                return solicitudserayudante.getNombreArchivo();
            }
        } else if (fieldId.equals("pathArchivoAdjunto")) {
            return solicitudserayudante.getPathArchivoAdjunto() == null ? "No Disponible" : Constantes.Rutas.rutaArchivos + solicitudserayudante.getPathArchivoAdjunto().replaceAll(" ", "%20");
        } else if (fieldId.equals("observacionEstudiante")) {
            if (solicitudserayudante.getMensajeParaProfesor() == null || solicitudserayudante.getMensajeParaProfesor().equals("")) {
                return "Sin comentarios";
            } else {
                String comentario = solicitudserayudante.getMensajeParaProfesor();
                return comentario.replaceAll("(\r\n|\r|\n|\n\r)", "\\\\n");
            }
        } else if (fieldId.equals("respuesta")) {
            return solicitudserayudante.getRespuestaConfirmacion() == null ? "No Disponible" : solicitudserayudante.getRespuestaConfirmacion();

        } else if (fieldId.equals("contrato")) {
            return registro.getPathContrato() == null ? "No Disponible" : registro.getPathContrato();
        } else if (fieldId.equals("disabled")) {
            return registro.isDisabled();
        } else {

            return "Key no esperado";
        }
    }

    public void setValue(FieldKey fieldKey, RowKey row, Object value)
            throws DataProviderException {
        int indice = ((IndexRowKey) row).getIndex();

        Rg_CandidatoAyudante registro = (Rg_CandidatoAyudante) this.getListaRg_CandidatoAyudante().get(indice);
        if (fieldKey.getFieldId().equals("horasContrato")) {
            if (value != null) {
                registro.getSolicitudserayudante().setHorasContrato((Integer) value);
            }
        } else if (fieldKey.getFieldId().equals("seleccionar")) {
            registro.setSeleccionado((Boolean) value);

        }
    }

    public boolean canInsertRow(RowKey beforeRow)
            throws DataProviderException {
        return false;
    }

    public RowKey insertRow(RowKey beforeRow)
            throws DataProviderException {
        return null;
    }

    public boolean canAppendRow()
            throws DataProviderException {
        return false;
    }

    public RowKey appendRow()
            throws DataProviderException {
        return null;
    }

    public boolean canRemoveRow(RowKey row)
            throws DataProviderException {
        return false;
    }

    public void removeRow(RowKey rowkey)
            throws DataProviderException {
    }
    //nuevo registro
    private ArrayList<Rg_CandidatoAyudante> listaRg_CandidatoAyudante = new ArrayList<Rg_CandidatoAyudante>();

    private ArrayList<Rg_CandidatoAyudante> getListaCandidatoAyudanteDefault() {
        ArrayList<Rg_CandidatoAyudante> listaCandidatoAyudanteDef = new ArrayList<Rg_CandidatoAyudante>();

        return listaCandidatoAyudanteDef;
    }

    public ArrayList<Rg_CandidatoAyudante> getListaRg_CandidatoAyudante() {
        return listaRg_CandidatoAyudante;
    }

    public void setListaRg_CandidatoAyudante(ArrayList<Rg_CandidatoAyudante> listaRg_CandidatoAyudante) {
        this.listaRg_CandidatoAyudante = listaRg_CandidatoAyudante;
    }
}
